From: Carlos Garnacho Date: Mon, 22 Oct 2018 22:06:36 +0000 (+0200) Subject: keyboardManager: Avoid idempotent calls to meta_backend_set_keymap() X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~897^2~1^2~73 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=b405ed64427a9d518d1714df678d04ad11267e15;p=gnome-shell.git keyboardManager: Avoid idempotent calls to meta_backend_set_keymap() But still try to apply the keymap whenever the input sources changed. This is a different approach to gnome-shell#240 that still avoid redundant changes to the current keymap, but actually trigger one when input sources are added. https://bugzilla.redhat.com/show_bug.cgi?id=1637418 Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/691 --- diff --git a/js/misc/keyboardManager.js b/js/misc/keyboardManager.js index ae59f0014..f4001f130 100644 --- a/js/misc/keyboardManager.js +++ b/js/misc/keyboardManager.js @@ -52,11 +52,20 @@ var KeyboardManager = new Lang.Class({ this._current = null; this._localeLayoutInfo = this._getLocaleLayout(); this._layoutInfos = {}; + this._currentKeymap = null; }, _applyLayoutGroup(group) { let options = this._buildOptionsString(); let [layouts, variants] = this._buildGroupStrings(group); + + if (this._currentKeymap && + this._currentKeymap.layouts == layouts && + this._currentKeymap.variants == variants && + this._currentKeymap.options == options) + return; + + this._currentKeymap = {layouts, variants, options}; Meta.get_backend().set_keymap(layouts, variants, options); }, @@ -89,8 +98,6 @@ var KeyboardManager = new Lang.Class({ }, setUserLayouts(ids) { - let currentId = this._current ? this._current.id : null; - let currentGroupIndex = this._current ? this._current.groupIndex : null; this._current = null; this._layoutInfos = {}; @@ -117,9 +124,6 @@ var KeyboardManager = new Lang.Class({ info.group = group; info.groupIndex = groupIndex; - if (currentId == id && currentGroupIndex == groupIndex) - this._current = info; - i += 1; } },